/**
 * @description EchartsIndex 底层组件
 * 提供echarts组件的公共函数方法
 * @description  chart 更新使用方式  chart.setOption(options, true)
 */
import ChartComponent from '../ChartComponent';
// 引入 ECharts 主模块
import echarts from 'echarts/lib/echarts';
// 引入提示框和标题组件
import 'echarts/lib/component/tooltip';
import 'echarts/lib/component/title';

export default class EchartsIndex extends ChartComponent{

  initInstance(module: any, option: any){
    return module.init(this.box, 'dark');
  }

  onMount(option: any) {
    this.update(option);
  }

  /**
   * 可控的echarts
   */
  getModule(){
    return echarts;
  }

  /**
   * 获取基础配置
   */
  public getBaseOption(){
    return {};
  }

  /**
   * 获取公共配置
   */
  getPublicOption(){
    return {
      backgroundColor: 'rgba(0,0,0,0)',
    };
  }

  /**
   * 重置大小
   */
  resizeChart = () => {
    this.myChart.resize();
  }

  /**
   * 清除配置
   */
  resetChart() {
    this.myChart.clear();
  }

  /**
   * option 图表的配置项和数据，具体见配置项手册。
   * @param option
   * @param notMerge 可选，是否不跟之前设置的 option 进行合并，默认为 false，即合并。
   * @param lazyUpdate 可选，在设置完 option 后是否延迟更新图表，默认为 false，即立即更新。
   */
  update = (option: any, notMerge = false, lazyUpdate = false) => {
    try {
      // 更新操作
      this.myChart.setOption(option, notMerge, lazyUpdate);
    } catch (e) {
      console.error('组件[' + this.props.uid + ']高级配置更新错误：' + e.message);
    }
  }
}
